//
// Created by 86131 on 2023/9/8.
//
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define SHUJUJIEGUO_二分查找_H
//typedef int Position;
using namespace std;
#define MAXSIZE 10
//typedef enum {false, true} bool;
typedef int ElementType;
typedef int Position;
#define MAXSIZE 10
typedef struct LNode *List;
struct LNode{
    ElementType Data[MAXSIZE];
    Position Last;/* 保存线性表中最后一个元素的位置 */
};
List ReadInput(); /* 读入线性表。元素从下标0开始存储 */
void PrintList( List L ); /* 输出线性表 */
Position dg (List L,ElementType X,Position Left ,Position Right){//利用递归的方法实现二分查找//远list数组要有序默认从小到大
    int mid = (Left+Right)/2;//mid为中间元素的下标
    if(Left+1==Right){return 0;}//表示没有找到该元素
    if(L->Data[mid]<X){//目标元素大于中值，只要数组后半段
        return dg(L,X,mid-1,Right);
    }
    if(L->Data[mid]>X){//目标元素小于中值，只要数组前半段
        return dg(L,X,Left,mid-1);
    }
    return mid;//刚好为中间元素
}
Position xh (List L,ElementType X){//利用循环去完成递归//默认数组有序从小到大
    int mid ,left ,right; //定义左右边界
    left =0;
    right = L->Last;
    while(left<=right){
        mid = (left+right)/2;//mid为中间值
        if (L->Data[mid]>X){//如果大于的话，就只要右半段
            left = mid-1;//调整左边界
        }
        if(L->Data[mid]<X){
            right = mid -1;//调整左边界
        }
    }
    if(left<=right){return 0;}
    return mid;

}

int main(){
    List L;
    ElementType X;
    L=ReadInput();
    cin>>X;
    int y = dg(L,X,0,L->Last);
    cout<<y;
}

List ReadInput(){
    List L;
    L = static_cast<List>(malloc(sizeof(struct LNode)));
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>L->Data[i];
    }
    L->Last=n-1;
    return L;
}
void PrintList( List L ){
    for(int i=0;i<L->Last;i++){
        cout<<L->Data[i]<<" ";
    }
    free(L);
}